package com.taxi.driver.widget.dialog;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;

import com.taxi.driver.R;


/**
 * 作    者：xiaoli （QQ：872179966）
 * 创建日期：7/7 0007.
 * 提示弹窗工具
 */

public class ContentDialog implements View.OnClickListener {
    private Context context;
    private Dialog dialog;
    private OnOneClickListener mOnOneClickListener;
    private OnTwoClickListener mOnTwoClickListener;

    public ContentDialog(Context context) {
        this.context = context;
        initDialog();
    }

    private TextView dialog_title;
    private TextView dialog_content;
    private TextView dialog_cancel;
    private TextView dialog_affirm;

    /**
     * 初始化对话框
     */
    private void initDialog() {
        dialog = new Dialog(context, R.style.dialog);
        dialog.setContentView(R.layout.dialog_content);
        dialog_title = (TextView) dialog.findViewById(R.id.dialog_title);
        dialog_content = (TextView) dialog.findViewById(R.id.dialog_content);
        dialog_cancel = (TextView) dialog.findViewById(R.id.dialog_cancel);
        dialog_affirm = (TextView) dialog.findViewById(R.id.dialog_affirm);
        dialog_cancel.setOnClickListener(this);
        dialog_affirm.setOnClickListener(this);
        dialog_cancel.setVisibility(View.GONE);
        dialog_title.setVisibility(View.GONE);
    }

    public boolean isShowing() {
        return dialog.isShowing();
    }

    /**
     * 设置标题
     *
     * @param title 标题
     */
    public ContentDialog setTitle(String title) {
        if (!TextUtils.isEmpty(title)) {
            dialog_title.setText(title);
            dialog_title.setVisibility(View.VISIBLE);
        } else {
            dialog_title.setVisibility(View.GONE);
        }
        return this;
    }

    /**
     * 设置提示内容
     *
     * @param content 内容
     */
    public ContentDialog setContent(String content) {
        dialog_content.setText(content);
        return this;
    }

    /**
     * 将确认按钮影藏
     */
    public void setAffirmDismiss() {
        dialog_affirm.setVisibility(View.GONE);
    }

    /**
     * 设置取消按钮显示内容
     *
     * @param content 内容
     */
    public ContentDialog setCancelContent(String content) {
        dialog_cancel.setText(content);
        return this;
    }

    /**
     * 设置取消按钮显示内容
     *
     * @param id
     */
    public ContentDialog setCancelContentColor(int id) {
        dialog_cancel.setTextColor(context.getResources().getColor(id));
        return this;
    }

    /**
     * 设置确认按钮显示内容
     *
     * @param content 内容
     */
    public ContentDialog setAffirmContent(String content) {
        dialog_affirm.setText(content);
        return this;
    }

    /**
     * 设置确认按钮显示内容颜色
     * @param id
     * @return
     */
    public ContentDialog setAffirmContentColor(int id) {
        dialog_affirm.setTextColor(context.getResources().getColor(id));
        return this;
    }

    /**
     * 显示对话框
     */
    public void show() {
        if (!((Activity)context).isFinishing())
        dialog.show();
    }

    /**
     * 处理点击事件
     */
    @Override
    public void onClick(View v) {
        dialog.dismiss();
        switch (v.getId()) {
            case R.id.dialog_cancel:
                if (mOnTwoClickListener != null){
                    mOnTwoClickListener.onCancel();
                }
                break;
            case R.id.dialog_affirm:
                if (mOnOneClickListener != null) {
                    mOnOneClickListener.onAffirm();
                }
                if (mOnTwoClickListener != null) {
                    mOnTwoClickListener.onAffirm();
                }
                break;
        }
    }

    /**
     * 设置单个按钮点击监听
     *
     * @param mOnOneClickListener 监听器
     */
    public ContentDialog setOnOneClickListener(OnOneClickListener mOnOneClickListener) {
        this.mOnOneClickListener = mOnOneClickListener;
        dialog_cancel.setVisibility(View.GONE);
        return this;
    }

    /**
     * 设置双按钮点击监听
     *
     * @param mOnTwoClickListener 监听器
     */
    public ContentDialog setOnTwoClickListener(OnTwoClickListener mOnTwoClickListener) {
        this.mOnTwoClickListener = mOnTwoClickListener;
        dialog_cancel.setVisibility(View.VISIBLE);
        return this;
    }

    public void dismiss() {
        if (dialog != null){
            dialog.dismiss();
        }
    }

    /**
     * 单按钮点击事件监听器
     */
    public interface OnOneClickListener {
        /**
         * 点击确认
         */
        void onAffirm();
    }

    /**
     * 双按钮点击事件监听器
     */
    public interface OnTwoClickListener {
        /**
         * 点击确认
         */
        void onAffirm();

        /**
         * 点击取消
         */
        void onCancel();
    }
}
